package br.com.quad.dao;

import java.util.List;

import br.com.quad.bean.TipoVeiculo;
import br.com.quad.dao.HibernateDAOFactory;



public class TipoVeiculoDAOHibernate implements TipoVeiculoDAO {

	HibernateDAOFactory hibernateDAOFactory = null;
	HibernateDAO<TipoVeiculo> hibernateDAO = null;
	
	public TipoVeiculoDAOHibernate(){
		hibernateDAOFactory = new HibernateDAOFactory();
		hibernateDAO = hibernateDAOFactory.getTipoVeiculoDAO();
	}
	
	@Override
	public boolean inserir(TipoVeiculo tipoVeiculo) throws Exception {
		boolean ok = false;
		
		try {
			hibernateDAO.add(tipoVeiculo);
			ok = true;
		} catch (Exception e) {
			throw new Exception(e.getMessage());
		} 
		return ok;
	}

	@Override
	public boolean alterar(TipoVeiculo tipoVeiculo) throws Exception {
		boolean ok = false;

		try {
			hibernateDAO.update(tipoVeiculo);
			ok = true;
		} catch (Exception e) {
			throw new Exception(e.getMessage());
		}

		return ok;
	}

	@Override
	public boolean isExclusaoLiberada(TipoVeiculo tipoVeiculo) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean excluir(TipoVeiculo tipoVeiculo) throws Exception {
		boolean ok = false;

		try {
			hibernateDAO.remove(tipoVeiculo);
			ok = true;
		} catch (Exception e) {
			throw new Exception(e.getMessage());
		}

		return ok;
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<TipoVeiculo> getSelecionar(String descricao) {
		String 	sql = "FROM TipoVeiculo WHERE codigoTipoVeiculo <> 0";

		if (!(descricao.isEmpty())) {
			sql += " AND descricao like '" + descricao + "%' ";  
		}	

		sql += " ORDER BY descricao";		
 
		List<TipoVeiculo> lista = hibernateDAO.getSession().createQuery(sql).list();

		return lista;
	}

	@Override
	public TipoVeiculo getTipoVeiculo(int codigoTipoVeiculo) {
		return hibernateDAO.get(codigoTipoVeiculo);
	}

	@Override
	public List<TipoVeiculo> getListarTodos(){
		return hibernateDAO.listAll();
	}

	@SuppressWarnings("unchecked")
	@Override
	public boolean isExiste(TipoVeiculo tipoVeiculo){
		String 	sql = 	" FROM TipoVeiculo " +
						" WHERE codigoTipoVeiculo <> "+tipoVeiculo.getCodigoTipoVeiculo()+""+
						" AND descricao like '" + tipoVeiculo.getDescricao() + "%' ";

		List<TipoVeiculo> lista = hibernateDAO.getSession().createQuery(sql).list();
	    
		if (lista.size()<1) {
			return false;
		} else {
			return true;
		}
	}

	@Override
	public void inicialize(TipoVeiculo tipoVeiculo){
		TipoVeiculo tv = DAOFactory.getTipoVeiculoDAO().getTipoVeiculo(tipoVeiculo.getCodigoTipoVeiculo());
		tv.getAcessorios();
		tipoVeiculo.setAcessorios(tv.getAcessorios());
		tipoVeiculo.setInformacoes(tv.getInformacoes());
	}
}
